
想像明天早上的 Daily:大家帶著查核結果來,一份寫「還要再查」,一份寫「可以交人確認」,還有好幾份被退回。接著有人問:「所以今天先做哪件?缺的證據誰去要?」
這是第三幕「方法離開作者」的最後一篇。前幾天,我已經留下 Skill、系統 Wiki、自動檢查與工具組。前兩天測的是「這套查法換個環境能不能跑,以及改過後判得對不對」。每跑一次,就留下一份結果:查了哪種情境、找到什麼證據、自動檢查有沒有通過。Day 20 留下 4 份,Day 21 留下 27 份,合計 31 份。
這些是同幾種教學情境反覆執行的紀錄,不是 31 件通知事故。今天換個問題:假如團隊拿到這些結果,能不能知道哪些要補查、哪些等待決定,以及下一步由誰接?
先看結果裡有什麼 → 請 Claude 整理下一步 → 把分工約定寫清楚 → 用 hook 檢查、用 Mod 看見卡點。
這次演練先定義三種角色,看看查核結果該由誰接:
| 角色 | 白話說 | 他要做的事 |
|---|---|---|
| 負責人 | 拍板的人(提示和程式裡寫作「服務 Owner」) | 看完資料,決定這則通知能不能結案;本例不由他代替查核者補資料 |
| 查核者 | 跑腿查證的人 | 用 Skill 去查、去跟別人要缺的收據或紀錄,可以有好幾位 |
| Skill 維護者 | 改查法的人 | 發現查法有漏洞時,回頭修改 Skill |
誰該接什麼,我心裡很清楚:還缺證據的,交給查核者去要;證據齊了、等著做決定的,才交給負責人。 既然這麼清楚,排工作應該可以交給 Claude。這次先驗分派結果,還沒有真人團隊採用的紀錄。
這 31 份包含重複試跑與不同測試情境,不能直接當成 31 件待辦。先看自動檢查給的狀態:
| 狀態 | 筆數 |
|---|---|
被退回(證據寫法不合格式,RETURN_FOR_EVIDENCE) |
18 |
還要再查(NEEDS_FOLLOWUP) |
7 |
可以交人確認(READY_FOR_REVIEW) |
5 |
| 無法執行 | 1 |
退回佔 58%,看起來像一半以上都失敗。但這些是要重查,還是只差寫法?還要再查的又在等誰?狀態數字回答不了。
我把 31 筆原始結果放進一個乾淨目錄,請 Claude 排出今天的工作清單。提示裡沒有寫誰該接哪件事,因為我以為這是常識。注意下面這段只限定「誰接」能填哪三種角色,沒有任何分派規則:
請排出團隊今天要處理的工作清單:重複的自行判斷要不要合併;unknown 怎麼處理由你判斷。
每件寫:標題、下一步、誰接(只能填:服務 Owner/查核者/Skill 維護者)、在等什麼、
合併了哪些結果編號、今天要不要處理。寫成 out/worklist.json。
(unknown 是還不能確定。)同一份輸入跑 3 次(Sonnet 5.5,只給讀檔和寫 out/ 的權限)。
它做對的: 3 次都沒被 58% 帶偏,知道那 18 筆答案是對的、只差寫法,今天不用處理。
它排錯的是誰接。 兩件在等對方回條的工作,照我心裡的規則該交給查核者去要;Claude 3 次都交給負責人,而且都排今天。看 owner 和 today 這兩行:
{
"title": "找不到接收端收據(receipts.json 缺失):接收端狀態 unknown",
"owner": "服務 Owner",
"waiting_for": "接收端 fake sink 的收據檔/請求紀錄(含 payload)",
"today": true
}
照我心裡的規則,負責人今天只該決定 1 件;照 Claude 的清單是 3、3、2 件,他得先把不該他做的事轉手出去。
我第一個反應是:「這不是很明顯嗎?」接著回頭找,這條規則寫在哪裡。
哪裡都沒寫。 Skill 沒寫,Wiki 沒寫,前幾天的交接文件也沒寫。這條規則一直只在我腦中,我每次看完結果,順手就分好了。Claude 不是排錯,是猜不到一條從來沒寫下來的規則。
要確認是不是這樣,我把規則寫成一行,加進提示,其他一字不改,再跑 3 次:
團隊分派政策:缺資料(例如收據、紀錄不齊)交查核者去要;只有條件齊全、等待決定的才交服務 Owner。
一行規則,3 次都照做,負責人每次都只剩 1 件。
所以 Skill 留下了共同查法,卻沒寫:缺證據由誰補查,證據齊了由誰拍板。 如果把這樣的方法交給團隊,就可能有人以為別人會去補資料,也可能把還沒查完的工作全推給負責人。查得更快,不代表問題就能更快被接著處理。
但「這 3 次照做」不等於「每次都會照做」。Day 19 的檢查程式,是我在外面一次一次跑;每天排工作時,沒有人會在外面幫每份清單跑檢查。
hook 是 Claude Code 在固定時機(例如 Claude 要結束回答時)自動執行的小程式,不必靠 Claude 記得,可以放行,也可以退回。
官方文件對這種情況寫得很直接:「Claude skipped a rule that must hold every time: move the rule into a hook.」這讓我把查法與自動檢查分開。加上下一節會用到的 Mod,本篇採用的分工是:
| Skill | hook | Mod | |
|---|---|---|---|
| 一句話 | 教 Claude 怎麼做 | 在指定事件檢查,可要求退回 | 把狀態畫出來給人看 |
| 適合放什麼 | 需要判斷的做法、步驟 | 每次都必須成立的規則 | 大家要一起看的進度 |
| 在這個案例 | 留下查通知的方法,供試跑使用(Day 17~21) | 缺證據的工作不能交給負責人 | 每件事做到第幾步、交給誰(下一節) |
所以第三組,我把提示改回第一次那樣,一樣不寫規則,改掛一個 Stop hook:Claude 要結束時,hook 自動檢查工作清單。這版先用等待欄位的關鍵字判斷(MISSING 比對「收據、紀錄、資料」等字詞):它能重現本次退件,但沒有實際查證證據是否齊全,已知缺口列在文末。
for it in items:
owner, wait = it.get('owner', ''), it.get('waiting_for', '')
if '服務 Owner' in owner and MISSING.search(wait): # 還缺證據卻交給服務 Owner
bad.append(it.get('title', ''))
if bad and not inp.get('stop_hook_active'): # 同一輪只擋一次,避免無限循環
print(json.dumps({'decision': 'block', 'reason': '還缺證據的工作要交給查核者……'}))
本例為了避免無限重排,同一輪只阻擋一次。這能要求 Claude 修正一次,並不保證修正後仍違規就一定無法結束。
| 什麼都不給 | 提示寫一行規則 | hook 每次檢查 | |
|---|---|---|---|
| 負責人今天要決定 | 3、3、2 件 | 1、1、1 件 | 1、1、0 件 |
| hook 擋下什麼 | 不適用 | 不適用 | 每次都擋下 2 件真的缺證據、卻交給負責人的 |
| 每次的回合/秒數/費用 | 5~27/約 47/US$0.19 | 5/約 46/US$0.18 | 7~11/約 60/US$0.21 |
| 靠什麼 | 靠 Claude 猜 | 靠 Claude 記得 | 每次都檢查,不管它記不記得 |
3 次都先排錯,3 次都被擋下來改掉。 這 3 次裡提示寫一行和 hook 都守住了,數據還分不出哪個更可靠;差別在表上最後一列:靠記得,還是靠檢查,代價是每次多約 14 秒、US$0.03。
但第 3 次的「0 件」不是好事,要打開看板才看得出來。
Mod 是裝進 Claude Code 的小外掛,可以在旁邊開一個面板,把檔案裡的狀態畫給人看。
這次 hook 的工作是檢查分派並留下退件紀錄。Daily 上大家想知道的是「每件事做到哪一步、卡在哪裡、誰該接」,所以我再寫了一個 Mod,在 Claude Code 右邊開一個看板。每件工作列出四步:① 發送端 ② 接收端 ③ 自動檢查 ④ 交給誰。它不重新判定分派是否違規,狀態直接讀查核結果、工作清單和 hook 留下的紀錄;看板不再複製一份退件規則。

看第三件「正常案例」:① 發送端、② 接收端都已確認,③ 有 4 筆可以交人確認,④ 卻交給了查核者。
看板一打開,問題就很明顯:證據已經齊了的那件,被交給了負責去要證據的人。 這是第 3 次的結果,也是表上那個「0 件」的原因。hook 沒有擋,因為它只守寫下的那一條規則「缺證據的不能交負責人」;反方向的錯,「證據齊了卻沒交給負責人」,不在它的檢查範圍裡。
我自己也踩了一個坑:第一版看板我在裡面又寫了一次「等證據」的判斷,結果把對的工作標成紅色。同一條規則各寫一份,就可能互相對不起來。 所以這條退件規則留在 hook,看板只呈現結果,不再自行重判。
下面這張不是 Claude 的輸出,是 build_view.py 照事先寫好的案例規則產生的對照清單(節錄五項):拿來核對 Claude 排得對不對,但只涵蓋這三種已定義的案例,不代表它能處理新情境。
| 工作 | 誰接 | 本次安排 | 下一步(依預設規則整理) |
|---|---|---|---|
| 通知資料完整 | 負責人 | 是 | 核對發送紀錄與回條後決定是否結案;限本機教學資料 |
| 找不到對方的回條 | 查核者 | 是,去要證據 | 向接收端要這則通知的回條,拿到前維持「還不能確定」 |
| 回條對不上這則通知 | 查核者 | 是,去要證據 | 查明那張回條屬於哪則通知,補查這則的回條 |
| 只差寫法的 18 筆退回 | Skill 維護者 | 否 | 答案對、只差格式,留作方法比較紀錄 |
| 只交 SKILL.md 跑不了 | Skill 維護者 | 是 | 安裝第一步改成先跑自測 |
前三件是同一則通知的三種測試變體,這份演練先分開列;若用在真實工作,同一事件出現互相矛盾的證據,要先核對來源,不能各自結案。這次留下的是工作清單,還沒有實際去要證據、真人裁決或驗證工時下降。
今天看得到,是因為查核已留下紀錄。服務持續運行時,又該留下哪些訊號,讓我們及早發現問題? 第四幕就從這裡開始。
參考資料:
run-triage.py(提示與權限;--policy 加一行規則、--hook 掛上 Stop hook)、hook/check_worklist.py(hook 的檢查規則)、mod/(看板,需 Claude Code v2.1.287 以上)、demo/(看板示範資料)、三組各 3 次的工作清單、hook 紀錄與軌跡、build_view.py、FINDINGS.md。claude --plugin-dir mod,再輸入 /work-view(需 Claude Code v2.1.287 以上)。目前目錄沒有執行結果時,看板讀的是內附的 demo/,看到畫面不代表已經重跑實驗。